上回我們能在後台看到Postman新增的一筆資料了,既然能新增資料就能刪除與修改資料。
在urls.py
中新增revise_classlist
路徑:
#<urls.py>
path('revise_classlist/',views.revise_classlist)
我們打開VScode找到Viws.py
,
在班級資料表(classlist
)下方再添加一項修改資料(revise_classlist
):
#<Views.py>
@csrf_exempt
def revise_classlist(request):
outputinfo={}
if request.method == "POST":
try:
data = json.loads(request.body)
classmember = Classlist.objects.get(Name=data['Name'])
classmember.Grade = data['Grade']
classmember.Class = data['Class']
classmember.Gender = data['Gender']
classmember.Number = data['Number']
classmember.save()
outputinfo = {"修改成功,已修改資料如下":
{"Grade": classmember.Grade,
"Class": classmember.Class,
"Gender": classmember.Gender,
"Number": classmember.Number,
"Name": classmember.Name,
"Upload_Time": classmember.Upload_Time,
"Last_Modified": classmember.Last_Modified}}
except:
outputinfo["錯誤:"] = "沒有這個名字的學生"
else:
outputinfo['資料類型錯誤'] = "請使用POST輸入"
return JsonResponse(outputinfo, safe=False, json_dumps_params={'ensure_ascii': False})
我們分析一下上面這些在做什麼:
@csrf_exempt
def revise_classlist(request):
if request.method == "POST":
else:
outputinfo['資料類型錯誤'] = "請使用POST輸入"
目的:嘗試執行(try:
)內部的指令若內部指令發生重大錯誤無法繼續運行時執行例外(except:
)內的程式。
try:
(...)
except:
#輸出錯誤狀態
outputinfo["錯誤:"] = "沒有這個名字的學生"
一筆資料
目的:<資烙表名稱>.objects.get是很好用的指令,但也有一定風險,
當你要尋找的資料確定存在並且只存在一筆資料時可以使用。
用法:抓取只存在一筆資料的結果存入前方變數,若要取資料表其中欄位的值時只需在變數後方添加想帶入的欄位參數即可。
#<資料表變數>=<資料表名稱>.objects.get(資料表欄位名稱 = data['<輸入參數名稱>']
classmember = Classlist.objects.get(Name=data['Name'])
輸入資料格式為JSON,需要先轉換為Python能認得的格式才能處理。
#<變數> = <json格式轉python格式>(<獲取輸入資料的位置>)
data = json.loads(request.body)
#<資料表變數>.<欄位名稱> = data['<輸入的資料>]']
classmember.Grade = data['Grade']
classmember.Class = data['Class']
classmember.Gender = data['Gender']
classmember.Number = data['Number']
#<資料表變數>.<儲存>()
classmember.save()
outputinfo = {"修改成功,已修改資料如下":
{"Grade": classmember.Grade,
"Class": classmember.Class,
"Gender": classmember.Gender,
"Number": classmember.Number,
"Name": classmember.Name,
"Upload_Time": classmember.Upload_Time,
"Last_Modified": classmember.Last_Modified}}
return JsonResponse(outputinfo, safe=False, json_dumps_params={'ensure_ascii': False})
這樣就完成了,用Postman測試看看:
我們修改ID為1的王曉明,將班級改為甲班
、號碼變更為31號
:
看看資料表是否有變更:
這樣就成功了,下回來教怎麼把資料刪除吧!
大家掰掰~
圖片來源:子曰